package com.demo.jzoffer2;

/**
 * @author gy
 * @date 2022/11/15
 */
public class Test1123_01 {
    /**
     * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。
     *
     *
     *
     * 示例：
     *
     * 输入：nums = [1,2,3,4]
     * 输出：[1,3,2,4]
     * 注：[3,1,2,4] 也是正确的答案之一。
     * @param nums
     * @return
     */
    public int[] exchange(int[] nums) {
        // 思路分析：双指针遍历整个数组，双指针分别在数组的两端
        int i = 0, j = nums.length - 1, tmp;
        while (i < j){
            // 直到找到偶数
            while (i < j && nums[i] % 2 == 1){
                i++;
            }
            // 直到找到奇数
            while (i < j && nums[j] % 2 == 0){
                j--;
            }
            // 开始交换奇数和偶数的位置
            tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        // 此时跳出说明 i=j
        return nums;
    }
}
